Redux 是一個 JavaScript 管理狀態的函式庫,通常用於管理較大型與複雜的應用程式的狀態,他最初是為了 React 所設計的,所以有些核心思想會與 React 有所關聯,不過在後來的演進中,他也完全獨立成了一個可以獨立運作的函式庫,並提供多種框架使用的方式。
Redux 提供了一種可預測與維護的方式來處理應用程式的狀態與資料,並使狀態的便會變得容易且可追蹤,並且他遵循著單向資料流的流程,因此我們也可以用開發者工具看到明確的資料異動。
以下是 Redux 所提供的資料流,這是最基本的方式,我們之後我在他身上擴增更多的功能
以下是 Redux 的一些關鍵概念和特點:
單一數據源:Redux 遵循單一數據源的原則,即整個應用程式的狀態被存儲在一個稱為 "store" 的地方。這使得應用程式的狀態易於管理和查詢。
不可變性:Redux 鼓勵不可變性,這意味著一旦狀態被創建,它不能被直接修改。相反,每次進行狀態更改時都要創建一個新的狀態對象。這有助於減少狀態變化的複雜性和副作用。
純函數減少副作用:Redux 中的 reducer 函數是純函數,它們接受先前的狀態和一個操作,然後返回新的狀態。這使得狀態變化可預測,並有助於減少副作用。
動作 (Actions):Redux 使用 "actions" 來描述狀態的變化。每個 action 是一個包含 type
和可選的 payload
的對象,它描述了應用程式中的某種事件。例如,一個 action 可能是 "增加數量",並且具有一個 type
和一個 payload
(新的數量值)。
Reducer:Reducer 是純函數,它們根據當前狀態和 action 來計算新的狀態。Redux 中的 reducer 負責處理特定的 action 類型,並根據需要更新狀態。
Store:Store 是應用程式的中心數據存儲庫,它包含整個應用程式的狀態。開發者可以通過 store 中提供的方法來訪問和修改狀態。
中間件 (Middleware):Redux 支援中間件,這些中間件可以用於處理非同步操作、日誌記錄、路由控制和其他高級功能。Redux 社群提供了各種中間件,也可以自定義中間件以滿足特定需求。
時間旅行調試:Redux 的狀態變化可以被記錄和回放,使開發者能夠輕鬆跟蹤應用程式狀態的變化,這對調試和錯誤排除非常有用。